import cupy as cp
import cusignal
import soundfile as sf

# 读取音频
data, fs = sf.read("/mnt/c/Users/jerry/Music/Website/O400000kinhV3motzG.ogg", dtype="float32")
if data.ndim > 1:
    data = data[:, 0]  # 取单声道

# 转到 GPU
data_gpu = cp.asarray(data)

# 定义频率范围（Hz）
lowcut = 300
highcut = 3000

# 归一化到 Nyquist 频率
nyq = 0.5 * fs
low = lowcut / nyq
high = highcut / nyq

# 设计 FIR 带通滤波器（使用 Hamming 窗）
numtaps = 1025  # 滤波器长度（越长越平滑）
taps = cusignal.firwin(numtaps, [low, high], pass_zero=False)

# 应用滤波器（GPU 上）
filtered_gpu = cusignal.lfilter(taps, 1.0, data_gpu)

# 保存结果
sf.write("mid_fir.wav", cp.asnumpy(filtered_gpu), fs)
print("✅ 输出 mid_fir.wav 成功！")
